#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define N 128

int main(int argc, char const *argv[])
{
    int fp_src;  //
    int fp_dst;

    int ch,nbytes;
    char buf[N]={0};
    if (argc != 3)//判断参数的个数必须是2个参数
    {
        printf("运行程序时请代入参数: ./fputc file1 file2 \n");
        exit(-1);
    }

    fp_src = open(argv[1],O_RDONLY|O_EXCL);//只读方式打开文件
    if (fp_src == 0)
    {
        perror("fp_src: open");
        exit(-1);
    }

    fp_dst = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664);//只写的方式打开文件，文件不存在创建，文件存在清空
    if (fp_dst == 0)
    {
        perror("fp_dst: open");
        exit(-1);
    }

    //fgets  不等于NULL ，说明没有读到文件末尾
    //fgets  等于NULL ，说明读到文件末尾
    while ((nbytes = read(fp_src,buf,1)) > 0)
    {
        //把读回来的数据写入到文件内
        //读回来多少字节写入多少字节
        write(fp_dst,buf,nbytes);
    }
    
    close(fp_src);
    close(fp_dst);

    return 0;
}
